package com.ay.selfservicemachine.permission;

import android.content.Context;
import android.text.TextUtils;

import com.ay.selfservicemachine.R;
import com.ay.selfservicemachine.base.HQWAppCompatActivity;
import com.ay.selfservicemachine.utils.HQWPermissionUtil;

public class PermissionCommander {

    /********************************************************************二次权限提示验证*********************************************************************************/

    /**
     * 权限验证
     * @param hqwAppCompatActivity 权限获取栈
     * @param permissions          权限集合
     * @param isConstraint         是否进行二次请求
     * @param content              获取权限提示内容
     * @param content2             第二次权限提示内容
     * @param permissionListener   权限请求回调
     */
    public static void startVerify(HQWAppCompatActivity hqwAppCompatActivity,
                                   String[] permissions,
                                   boolean isConstraint,
                                   String content,
                                   String content2,
                                   PermissionListener permissionListener) {
        String[] processed = HQWPermissionUtil.PermissionDispose(permissions);
        if (hqwAppCompatActivity.HQWHavePermissions(processed)) {//判断是否已经拥有权限
            permissionListener.onsucceed();
        } else if (hqwAppCompatActivity.HQWPermissionIsRefuse(processed)) {//判断第一次请求权限是否拒绝过权限
            showPermissionSetting(hqwAppCompatActivity, permissionListener, "");
        } else {
            PermissionDialog permissionDialog = new PermissionDialog(hqwAppCompatActivity, processed, isConstraint, content, content2, permissionListener);
            permissionDialog.show();
        }
    }

//    /**
//     * 权限验证
//     * @param hqwFragment 权限获取栈
//     * @param permissions          权限集合
//     * @param isConstraint         是否进行二次请求
//     * @param content              获取权限提示内容
//     * @param content2             第二次权限提示内容
//     * @param permissionListener   权限请求回调
//     */
//    public static void startVerify(HQWFragment hqwFragment,
//                                   String[] permissions,
//                                   boolean isConstraint,
//                                   String content,
//                                   String content2,
//                                   PermissionListener permissionListener) {
//        if (hqwFragment.HQWHavePermissions(HQWPermissionUtil.PermissionDispose(permissions))) {//判断是否已经拥有权限
//            permissionListener.onsucceed();
//        } else if (hqwFragment.HQWPermissionIsRefuse(HQWPermissionUtil.PermissionDispose(permissions))) {//判断第一次请求权限是否拒绝过权限
//            showPermissionSetting(hqwFragment.getContext(), permissionListener, "");
//        } else {
//            PermissionDialog permissionDialog = new PermissionDialog(hqwFragment, permissions, isConstraint, content, content2, permissionListener);
//            permissionDialog.show();
//        }
//    }

    /********************************************************************特殊权限验证*********************************************************************************/

    /**
     * 特殊权限验证
     * @param hqwAppCompatActivity 权限获取栈
     * @param permission           权限
     * @param isConstraint         是否进行二次请求
     * @param content              获取权限提示内容
     * @param content2             第二次权限提示内容
     * @param permissionListener   权限请求回调
     */
    public static void startSpecialVerify(HQWAppCompatActivity hqwAppCompatActivity,
                                          String permission,
                                          boolean isConstraint,
                                          String content,
                                          String content2,
                                          PermissionListener permissionListener) {
        if (hqwAppCompatActivity.HQWHavePermissions(new String[]{permission})) {//判断是否已经拥有权限
            permissionListener.onsucceed();
        } else {
            PermissionSpecialDialog permissionSpecialDialog = new PermissionSpecialDialog(hqwAppCompatActivity, permission,isConstraint ,content, content2,permissionListener);
            permissionSpecialDialog.show();
        }
    }


    /********************************************************************不带提示的权限验证*********************************************************************************/

    /**
     * 权限验证
     *
     * @param hqwAppCompatActivity 权限获取栈
     * @param permissions          权限集合
     * @param isShowHint           是否显示提示信息（去权限setting）
     * @param permissionListener   权限请求回调
     */
    public static void startVerify(HQWAppCompatActivity hqwAppCompatActivity,
                                   String[] permissions,
                                   boolean isShowHint,
                                   PermissionListener permissionListener) {
        String[] processed = HQWPermissionUtil.PermissionDispose(permissions);
        if (hqwAppCompatActivity.HQWHavePermissions(processed)) {//判断是否已经拥有权限
            permissionListener.onsucceed();
        } else {
            hqwAppCompatActivity.HQWPermissions(processed, new HQWPermissionListener() {
                @Override
                public void onsucceed() {
                    permissionListener.onsucceed();
                }

                @Override
                public void onfailure() {
                    if (isShowHint) {
                        String str = hqwAppCompatActivity.getDeniedPermissionStr(processed);
                        showPermissionSetting(hqwAppCompatActivity, permissionListener, str);
                    } else {
                        permissionListener.onfailure();
                    }
                }
            });
        }
    }

//
//    /**
//     * 权限验证
//     *
//     * @param hqwFragment 权限获取栈
//     * @param permissions          权限集合
//     * @param isShowHint           是否显示提示信息（去权限setting）
//     * @param permissionListener   权限请求回调
//     */
//    public static void startVerify(HQWFragment hqwFragment,
//                                   String[] permissions,
//                                   boolean isShowHint,
//                                   PermissionListener permissionListener) {
//        if (hqwFragment.HQWHavePermissions(HQWPermissionUtil.PermissionDispose(permissions))) {//判断是否已经拥有权限
//            permissionListener.onsucceed();
//        } else {
//            hqwFragment.HQWPermissions(permissions, new HQWPermissionListener() {
//                @Override
//                public void onsucceed() {
//                    permissionListener.onsucceed();
//                }
//
//                @Override
//                public void onfailure() {
//                    if (isShowHint) {
//                        String str = hqwFragment.getDeniedPermissionStr(permissions);
//                        showPermissionSetting(hqwFragment.getContext(), permissionListener, str);
//                    } else {
//                        permissionListener.onfailure();
//                    }
//                }
//            });
//        }
//    }



    /********************************************************************跳转设置权限*********************************************************************************/


    /**
     * 权限获取失败 弹出提示框让用户去手机设置自行开启权限
     */
    public static void showPermissionSetting(Context context, PermissionListener permissionListener, String lockPerStr) {
        String hint = context.getString(R.string.prompt_setting_permission);
        if (!TextUtils.isEmpty(lockPerStr)) {
            hint += "(" + lockPerStr + ")";
        }
        PermissionSettingDialog permissionSettingDialog = new PermissionSettingDialog(context, permissionListener, hint);
        permissionSettingDialog.show();
    }
}
